#-*- coding: UTF-8 -*-
from pyramid.httpexceptions import HTTPFound
from pyramid.security import remember
from pyramid.security import forget




from scp.modelo.models import DBSession
from scp.modelo.Proyecto import Proyecto

from pyramid.response import Response
from pyramid.view import view_config
import json

import re

#@view_config(renderer='json')
def proyectos(request):

	print ">>>>>>>>>>>>>Controlador de Proyectos - Inicio>>>>>>>>>>>>>>"
	print "request:"
	print request

	print '>>>>>>>>>>>>>>>request.metodo<<<<<<<<<<<<<<<<<<<<<<'
	
	methodRequest = request.method
	print methodRequest
	
	print '>>>>>>>>>>>>>>request.url<<<<<<<<<<<<<<<<<<<<<<<<<<'
	
	print request.url
	
	
	print '>>>>>>>>>>>>>>>reles_url<<<<<<<<<<<<<<<<<<<'
	
	print '>>>>>>>>>>>>>>request_matchdict<<<<<<<<<<<<'
	
	dicParametros = request.matchdict
	
	print request.matchdict
	print '>>>>>>>>>>>>>>request_matchdict<<<<<<<<<<<<'
	
	proyectos_url = request.route_url('proyectos', operacion=1)
	print proyectos_url
	
	print "parametros abajo..."
	print request.params
	
	print 'request.body'
	print request.body 
	

	print "operaciónnnnnnnn"
	print dicParametros.get('operacion')
	print "operaciónnnnnnnn"
	
	
	if dicParametros.get('operacion') == 'update' or dicParametros.get('operacion') == 'create':
		print 'entre el if de update'
		
		print 'json.loads(request.params[proyecto])'
		proyecto = json.loads(request.params['proyecto'])
		print json.loads(request.params['proyecto'])
		print 'proyecto.data'
		proyectoData = proyecto.get('data')
		print proyecto.get('data')
		print 'proyecto.data.nombreProyecto'
		print proyectoData.get('nombreProyecto')
		
		#print request.params['rol']	
		#print request.json_body
		#print json.loads(request.params['rol'])
		#print request.params['data']
		#print 'json.loads(request.body)'	
		#print json.loads(request.body)
	
	
	#response = Response()
	#response.body = json.dumps(dict(success = True, proyectos = [{'idProyecto':'1', 'nombreProyecto': 'scp', 'descripProyecto':'sistema de control', 'fecIniProyecto':'14/04/2012'}, {'idProyecto':'2', 'nombreProyecto': 'sap', 'descripProyecto':'sistema de administracion', 'fecIniProyecto':'21/04/2012'}]))
	#response.content_type = 'application/json'
	
	print 'dicParametros.get(operacion).find(?):' 
	print dicParametros.get('operacion').find('?')
	
	session = DBSession()
	if dicParametros.get('operacion') == 'view' and request.url.find('?') == -1:
		print 'respondí un diccionario normal'
		return {'content':'Hello!'}	
	elif dicParametros.get('operacion') == 'view':
		proyectosAll = session.query(Proyecto).all()
		
		proyectosArray = []
		for proyectoIter in proyectosAll:
			aux = {'idProyecto': proyectoIter.id, 'nombreProyecto': proyectoIter.nombre, 'descripProyecto':proyectoIter.descripcion, 'fecIniProyecto':proyectoIter.fecha_inicio, 'estado':proyectoIter.estado}
			proyectosArray.append(aux)
		
		responseView = Response()
		responseView.body = json.dumps(dict(success = True, proyectos = proyectosArray))
		responseView.content_type = 'application/json'
		
		print 'respondí con un Responseeeee!!!'
		return responseView
	elif dicParametros.get('operacion') == 'create':
		responseCreate = Response()
		proyectoNombre = session.query(Proyecto).filter_by(nombre=proyectoData.get('nombreProyecto')).first()
		if proyectoNombre is None:
			proyecto = Proyecto()
			proyecto.nombre = proyectoData.get('nombreProyecto')
			proyecto.descripcion = proyectoData.get('descripProyecto')
			proyecto.fecha_inicio = proyectoData.get('fecIniProyecto')
			proyecto.estado = "PENDIENTE"
			
			session.add(proyecto)		
			
			responseCreate.body = json.dumps(dict(success = True))
			responseCreate.content_type = 'application/json'	
		else:
			responseCreate.body = json.dumps(dict(success = False, msg = 'Ya existe un nombre de proyecto igual!!!'))
			responseCreate.content_type = 'application/json'
			
		return responseCreate
	elif dicParametros.get('operacion') == 'update':
		responseUpdate = Response()
		proyectoNombre = session.query(Proyecto).filter_by(nombre=proyectoData.get('nombreProyecto')).first()
		proyectoUpdate = session.query(Proyecto).filter_by(id=proyectoData.get('idProyecto')).first()
		if proyectoNombre is not None and proyectoNombre.id != proyectoUpdate.id:
			responseUpdate.body = json.dumps(dict(success = False, msg = 'Ya existe un nombre de proyecto igual!!!'))
			responseUpdate.content_type = 'application/json'
		else:	
			proyectoUpdate.nombre = proyectoData.get('nombreProyecto')
			proyectoUpdate.descripcion = proyectoData.get('descripProyecto')
			proyectoUpdate.fecha_inicio = proyectoData.get('fecIniProyecto')
			
			responseUpdate.body = json.dumps(dict(success = True, ))
			responseUpdate.content_type = 'application/json'
			
		return responseUpdate
	
	elif dicParametros.get('operacion') == 'anular':
		
		idProyectoAnular = json.loads(request.params['param_id'])
		proyectoAnular = session.query(Proyecto).filter_by(id=idProyectoAnular).first()
		proyectoAnular.estado = 'ANULADO'
		
		responseAnular = Response()
		responseAnular.body = json.dumps(dict(success = True))
		responseAnular.content_type = 'application/json'
		return responseAnular
			
	elif dicParametros.get('operacion') == 'iniciar':
		
		idProyectoIniciar = json.loads(request.params['param_id'])
		proyectoIniciar = session.query(Proyecto).filter_by(id=idProyectoIniciar).first()
		proyectoIniciar.estado = 'ACTIVO'
		
		responseIniciar = Response()
		responseIniciar.body = json.dumps(dict(success = True))
		responseIniciar.content_type = 'application/json'
		return responseIniciar
	
	elif dicParametros.get('operacion') == 'finalizar':
		
		idProyectoFinalizar = json.loads(request.params['param_id'])
		proyectoFinalizar = session.query(Proyecto).filter_by(id=idProyectoFinalizar).first()
		proyectoFinalizar.estado = 'FINALIZADO'
		
		responseFinalizar = Response()
		responseFinalizar.body = json.dumps(dict(success = True))
		responseFinalizar.content_type = 'application/json'
		return responseFinalizar
					
